/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.uca.dss.curso2011.grupo5;

import org.joda.time.LocalDate;
import org.joda.time.LocalTime;

/**
 *
 * @author Diego
 */
public class Reserva
{
    private String codigoReserva;
    private String ciudadOrigen;
    private String ciudadDestino;
    private LocalDate fecha;
    private LocalTime hora;

    /**
     *
     * @param ciudadOrigen  ciudad origen de la reserva
     * @param ciudadDestino ciudad destino de la reserva
     * @param fecha fecha de la reserva
     * @param hora hora a la que sale el tren
     */
    Reserva(String ciudadOrigen, String ciudadDestino, LocalDate fecha, LocalTime hora) throws IllegalArgumentException
    {
        Args.comprobarCadena(ciudadOrigen);
        Args.comprobarCadena(ciudadDestino);
        Args.comprobarNulo(fecha);
        Args.comprobarNulo(hora);

        codigoReserva = String.valueOf(System.currentTimeMillis());
        this.ciudadOrigen = ciudadOrigen;
        this.ciudadDestino = ciudadDestino;
        this.fecha = fecha;
        this.hora = hora;
    }

    /**
     * Devuelve el código de reserva de la Reserva
     * @return el codigo de reserva
     */
    public String getCodigoReserva()
    {
        return codigoReserva;
    }

    /**
     * Devuelve la ciudad origen del que parte el trayecto reservado
     * @return la ciudad de origen
     */
    public String getCiudadOrigen()
    {
        return ciudadOrigen;
    }

    /**
     * Devuelve la ciudad destino a la que llega el trayecto reservado
     * @return la ciudad de destino
     */
    public String getCiudadDestino()
    {
        return ciudadDestino;
    }

    /**
     * Devuelve la fecha de la reserva
     * @return la fecha de la reserva
     */
    public LocalDate getFecha()
    {
        return fecha;
    }

    /**
     * Devuelve la hora a la que sale el tren qeu cubre el trayecto reservado
     * @return la hora a la que sale el tren
     */
    public LocalTime getHora()
    {
        return hora;
    }
}
